package com.example.ass7.level;

import java.util.List;

import com.example.ass7.sprite.Block;
import com.example.ass7.sprite.Formation;
import com.example.ass7.sprite.Sprite;

/**
 * @author Meirav Ben Izhak
 */
public interface LevelInformation {

    // The initial velocity of each ball
    // Note that initialBallVelocities().size() == numberOfBalls()
    /**
     * @return int
     */
    int paddleSpeed();

    /**
     * @return int
     */
    int paddleWidth();

    // the level name will be displayed at the top of the screen.
    /**
     * @return String
     */
    String levelName();

    // Returns a sprite with the background of the level
    /**
     * @return Sprite
     */
    Sprite getBackground();

    // The Blocks that make up this level, each block contains
    // its size, color and location.
    /**
     * @return List<Block>
     */
    List<Block> blocks();

    // Number of levels that should be removed
    // before the level is considered to be "cleared".
    // This number should be <= blocks.size();
    /**
     * @return int
     */
    int numberOfBlocksToRemove();

    /**
     * @return Formation.
     */
    Formation formation();
}
